An integrated circuit (IC) is a semiconductor device that combines the functions of several discrete electronic components into a single miniature package. For example, an IC may be a logic gate or a microprocessor. An application specific integrated circuit (ASIC) is an integrated circuit (IC) that generally combines the functions of several individual ICs into one IC created for a specific application. For example, ASICs are often used with digital music players or cellular telephones because these devices have a clearly defined use which does not change over time. Many of the functions of these devices may be subsumed by the ASIC rather than including a separate IC for each individual function. ASICs therefore exhibit reduced size, lower cost, and lower power consumption, all of which stem from the reduced number of ICs needed for the specific application.
ASICs include several functional components. For example, an ASIC may include a processor, interfaces such as a network interface, and an internal memory, such as a random access memory (RAM) or a Flash memory. These components may be sourced from standard libraries, leading to a simple process of choosing which components are needed by the ASIC and choosing how to arrange and connect the components.
In many instances, a user may want to use both RAM and Flash memory in an ASIC. One common type of RAM, dynamic RAM (DRAM), is process incompatible with Flash memory. In other words, the semiconductor processing operations for creating the RAM and the semiconductor processing operations for creating the Flash memory are sufficiently different that DRAM and Flash memory cannot be formed within the same IC. In these cases, an ASIC is manufactured with one type of memory, and an additional IC containing the other type of memory and external to the ASIC is used. The additional ICs increase the cost, size, and power consumption of a device.
Conventional ASICs use available memory blocks (“macro” blocks) of a predetermined size, for example one megabyte (MB). Although ASICs are easy to develop with these blocks, the resulting ASICs are limited to predetermined memory sizes, for example, multiples of one MB. Using these examples, if an ASIC designer needs 1.5 MB of memory, the designer is forced to use two MB of memory on their ASIC because the memory is available only in one MB blocks. The additional, unneeded memory increases the cost, size, and power consumption of the ASIC as well as reducing performance.
There are continuing efforts to improve integration of memory into ASICs and other ICs.